#include "junix.h"
using namespace std;

struct A
{
	public:
		A();
		void f();

	private:
		struct Impl;
		boost::scoped_ptr<Impl> pimpl;
};


//=======================================================
//   Implement
//=======================================================

struct A::Impl
{
	void f(){
		std::cout<<"A::Impl::f()"<<std::endl;
	}
};

A::A()
	:pimpl(new Impl)
{ }

void A::f()
{
	pimpl->f();
}

int main(int argc, char **argv)
{
	A a;
	a.f();

	return 0;
}
